package com.example.voucher.contract;

import java.math.BigDecimal;
import java.util.Date;

import com.example.voucher.enums.VoucherScenarioEnum;

/**
 * 适配源数据
 * 
 * @author jie.deng
 * @date 2020/11/04
 */
public interface VoucherItemCapable {

    // private String scenario;

    // // 本方公司
    // private String orgTitleId;
    // private String orgTitleCode;
    // private String orgTitleName;
    // // 相对方
    // private String oppoOrgTitleId;
    // private String oppoOrgTitleCode;
    // private String oppoOrgTitleName;
    // // 发票
    // private String invoiceCode;
    // private String invoiceNo;
    // private Date invoiceDate;
    // private Long invoiceId;
    // private Integer invoiceSn;
    // private Long invoiceSnId;
    //
    // private BigDecimal weight;
    // private BigDecimal preTaxAmount;
    // private BigDecimal taxAmount;
    // private BigDecimal priceTaxAmount;
    //
    // private String orderCode;
    // private Date orderDate;
    // private String rcCode;
    // private String rcName;
    // private String productLine;
    // private String siteCode;
    // private String siteName;
    // private String siteFullname;

    /**
     * 生成凭证场景的编号 根据场景编号确定生成哪几个科目的凭证， 需要与两个配置文件保持一致：reducing.yml 和 mapping_tenantCode_ScenarioCode_subjectCode.properties
     * 
     * @see VoucherScenarioEnum
     * @return
     */
    String getScenario();

    default String getOrgTitleCode() {
        return null;
    }

    String getOrgTitleName();
    
    String getOrgTitleFullname();

    default String getOppoOrgTitleCode() {
        return null;
    }

    String getOppoOrgTitleName();

    String getOppoOrgTitleFullname();

    default String getInvoiceCode() {
        return null;
    }

    String getInvoiceNo();

    default Date getInvoiceDate() {
        return null;
    }

    default Long getInvoiceId() {
        return null;
    }

    default Integer getInvoiceSn() {
        return null;
    }

    default Long getInvoiceSnId() {
        return null;
    }

    BigDecimal getWeight();

    BigDecimal getPreTaxAmount();

    BigDecimal getTaxAmount();

    BigDecimal getPriceTaxAmount();

    default String getOrderCode() {
        return null;
    }

    default Date getOrderDate() {
        return null;
    }

    default String getRcCode() {
        return null;
    }

    default String getRcName() {
        return null;
    }

    default String getProductLine() {
        return null;
    }

    default String getSiteCode() {
        return null;
    }

    default String getSiteName() {
        return null;
    }

    default String getSiteFullname() {
        return null;
    }

    default Date getNow() {
        return new Date();
    }

    default Date getScanDate() {
        return null;
    }

    default Date getVerifyDate() {
        return null;
    }
    
    default Date getAccountDate() {
        return null;
    }
    
    default String getUnit() {
        return null;
    }

    default String getQtyUnit() {
        return null;
    }

    default String getItName() {
        return null;
    }
    
    default String getIcName() {
        return null;
    }
}